$(function () {
    var layer = layui.layer;
    var form = layui.form;
    var laypage = layui.laypage;

    // 定义参数对象q,发送ajax时候用
    var q = {
        pagenum: 1,     //页码
        pagesize: 2,    //每页显示多少条,默认2条
        cate_id: '',    //文章分类的id
        state: ''       //文章的发布状态
    }

    // 模板引擎日期处理过滤器
    template.defaults.imports.dataFormat = function (data) {
        const dt = new Date(data);
        var y = dt.getFullYear();
        var m = padZero(dt.getMonth() + 1);
        var d = padZero(dt.getDate());

        var h = padZero(dt.getHours());
        var i = padZero(dt.getMinutes());
        var s = padZero(dt.getSeconds());

        return y + "-" + m + "-" + d + " " + h + ":" + i + ":" + s;
    }

    // 补0函数
    function padZero(data) {
        return data < 10 ? '0' + data : data;
    }

    getArtList();
    getCateList();

    // 获取文章列表数据
    function getArtList() {
        $.ajax({
            type: 'GET',
            url: '/my/article/list',
            data: q,
            success: function (res) {
                if (res.status !== 0) {
                    return layer.msg('获取文章列表失败');
                }
                var strHtml = template('art-list', res);
                $('tbody').html(strHtml);
                pageShow(res.total);
            }
        });
    }

    // 获取分类数据
    function getCateList() {
        $.ajax({
            type: 'GET',
            url: '/my/article/cates',
            success: function (res) {
                if (res.status !== 0) {
                    return layer.msg('获取分类失败');
                }
                var htmlStr = template('cate-list', res);
                $('[name=cate_id]').html(htmlStr);
                // 此处由于layui的模板引擎机制,会导致渲染不上去因此需要加form.render
                form.render();
            }
        })
    }

    // 筛选功能的实现
    $('#form-search').on('submit', function (e) {
        e.preventDefault();
        var cate_id = $('[name = cate_id]').val();
        var state = $('[name = state]').val();
        q.cate_id = cate_id;
        q.state = state;
        getArtList();
    })


    // 分页方法
    function pageShow(total) {
        //执行一个laypage实例
        laypage.render({
            elem: 'pageshow' //注意，这里的 test1 是 ID，不用加 # 号
            , count: total //数据总数，从服务端得到
            , limit: q.pagesize //每页显示条数
            , curr: q.pagenum //初始页面 第一页开始
            , layout: ['count', 'limit', 'prev', 'page', 'next', 'skip']
            , limits: [1, 2, 3, 5, 10]  //可选择每页展示条数,layout中开启limit后使用该属性
            , jump: function (obj, first) { //obj当前页码的属性,first监听是否第一次打开页面
                //obj包含了当前分页的所有参数，比如：
                // console.log(obj.curr); //得到当前页，以便向服务端请求对应页的数据。
                // console.log(obj.limit); //得到每页显示的条数
                q.pagenum = obj.curr;   //实现同步跳转,即点击页码后将页码赋值给q 并重新渲染
                q.pagesize = obj.limit; //因为开启了limits选择每页几条数据属性,因此需要同步一下q
                //首次不执行
                if (!first) {
                    // 如果不是第一次打开页面,则重新渲染页面数据
                    getArtList();
                }
            }
        });
    }

    // 删除文章
    $('tbody').on('click', '.btn-delart', function () {
        // 获取当前页面上展示的数据条数
        var delen = $('.btn-delart').length;
        var id = $(this).attr('data-id');
        layer.confirm('确定删除?', { icon: 3, title: '提示' }, function (index) {
            $.ajax({
                method: 'GET',
                url: '/my/article/delete/' + id,
                success: function (res) {
                    if (res.status !== 0) {
                        return layer.msg('数据删除失败');
                    }
                    layer.msg('文章删除成功');
                    // 判断删除该条数据后当前页面上是否还有可展示的数据
                    // 如果有则跳过,没有,则当前页面页码-1  
                    // 如果当前页面页码已是1,那么维持页码1
                    if(delen === 1) {
                        q.pagenum = q.pagenum === 1 ? 1 : q.pagenum - 1
                    }
                    getArtList();
                    layer.close(index);
                }
            })
        });





    })

})